iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
佛心分享-SideProject30

從0開始—初階程式語言學習者的必經之路系列 第 12

DAY12簡介OOP(物件導向程式設計/Object-Oriented Programming)

  • 分享至 

  • xImage
  •  

OOP 的四大核心概念是封包(Encapsulation)、繼承(Inheritance)、多型(Polymorphism)和抽象(Abstraction)。

1. 封包(Encapsulation)

封包是一種將資料(屬性)和操作這些資料的方法(行為)綁定在一起的技術,並隱藏內部的實現細節。這樣做的好處是外部無法直接修改物件的內部狀態,僅能透過公開的方法(getter 和 setter)來存取或修改,這有助於提升程式的安全性和可維護性。

public class Person {
private String name; // 私有屬性
private int age;

// 公開的 getter 和 setter 方法
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

}

2. 繼承(Inheritance)

繼承允許我們從已有的類別(父類別)建立新類別(子類別),新類別會繼承父類別的屬性和方法,並可以新增或覆寫(override)原有的方法。這種方式能夠重用代碼,並且易於建立更具專一性的類別。

public class Animal {
public void eat() {
System.out.println("This animal is eating.");
}
}

public class Dog extends Animal {
// 覆寫父類別的方法
@Override
public void eat() {
System.out.println("The dog is eating.");
}

public void bark() {
    System.out.println("The dog is barking.");
}

}

3. 多型(Polymorphism)

多型允許我們在不改變程式碼結構的情況下,使用相同的介面(或方法)來執行不同的行為。這可以通過方法的覆寫(Override)和方法的多載(Overload)來實現。

public class Animal {
public void sound() {
System.out.println("Animal makes a sound.");
}
}

public class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks.");
}
}

public class Cat extends Animal {
@Override
public void sound() {
System.out.println("Cat meows.");
}
}

public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();

    myDog.sound();  // Dog barks.
    myCat.sound();  // Cat meows.
}

}

4. 抽象(Abstraction)

抽象是指將類別或方法中的非必要細節隱藏,僅暴露必要的介面給使用者。抽象可以透過抽象類別(abstract class)和介面(interface)來實現。在 Java 中,抽象類別不能被實例化,而介面則可以用來定義類別必須實現的行為。

abstract class Animal {
// 抽象方法
public abstract void sound();

// 非抽象方法
public void sleep() {
    System.out.println("This animal is sleeping.");
}

}

class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks.");
}
}

public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.sound(); // Dog barks.
myDog.sleep(); // This animal is sleeping.
}
}


上一篇
DAY11 闖關遊戲—如何使用OOP
下一篇
DAY13 C++、Python的OOP?程式語言的相似語法
系列文
從0開始—初階程式語言學習者的必經之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言